package com.lagou.edu.dao.impl;

import com.lagou.edu.annotition.MyAutowired;
import com.lagou.edu.annotition.MyComponent;
import com.lagou.edu.pojo.Account;
import com.lagou.edu.dao.AccountDao;
import com.lagou.edu.utils.ConnectionUtils;
import com.lagou.edu.utils.DruidUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 * @author 应癫
 */
@MyComponent("accountDao")
public class JdbcAccountDaoImpl implements AccountDao {

	@MyAutowired
	private ConnectionUtils connectionUtils;

//	public ConnectionUtils getConnectionUtils() {
//		return connectionUtils;
//	}
//
//	public void setConnectionUtils(ConnectionUtils connectionUtils) {
//		this.connectionUtils = connectionUtils;
//	}

	@Override
	public Account queryAccountByCardNo(String cardNo) throws Exception {
		//从连接池获取连接
		Connection currentThreadConn = connectionUtils.getCurrentThreadConn();
		String sql = "select * from account where cardNo=?";
		PreparedStatement preparedStatement = currentThreadConn.prepareStatement(sql);
		preparedStatement.setString(1, cardNo);
		ResultSet resultSet = preparedStatement.executeQuery();

		Account account = new Account();
		while (resultSet.next()) {
			account.setCardNo(resultSet.getString("cardNo"));
			account.setName(resultSet.getString("name"));
			account.setMoney(resultSet.getInt("money"));
		}

		resultSet.close();
		preparedStatement.close();
//		con.close();

		return account;
	}

	@Override
	public int updateAccountByCardNo(Account account) throws Exception {

		//从连接池获取连接
		//改造为：从当前线程当中获取绑定的connection连接
		Connection currentThreadConn = connectionUtils.getCurrentThreadConn();
		String sql = "update account set money=? where cardNo=?";
		PreparedStatement preparedStatement = currentThreadConn.prepareStatement(sql);
		preparedStatement.setInt(1, account.getMoney());
		preparedStatement.setString(2, account.getCardNo());
		int i = preparedStatement.executeUpdate();

		preparedStatement.close();
//		con.close();
		return i;
	}
}
